<?php
/** 定义错误处理级别  */
error_reporting(E_ALL);

/** 去除魔术引用 */
//set_magic_quotes_runtime(0);
@ini_set('magic_quotes_sybase', 0);

/** 定义项目绝对路径常量'ABSPATH' */
define('ABSPATH', dirname(__FILE__) . '/');

/** 定义Tatu框架路径常量'TATUPATH' */
define('TATUPATH', dirname(__FILE__) . '/tatu/');

/** 兼容性处理  **/
require( TATUPATH . 'Compat.php' );

/** 引入公共函数 */
require( TATUPATH . 'Common.php');

/** 自定义错误处理  */
set_error_handler('_exception_handler');

require( TATUPATH . 'Tatu.php' );

require( TATUPATH . 'libs/URI.php' );

$URI = new URI();
$URI->parse();

/** 执行前置钩子 **/
if( !empty( $URI->pre_hooks ) ) {
	require( TATUPATH . 'libs/Hook.php' );
	$EXT = new Hook();
	$EXT->execute('pre', $URI->pre_hooks);
}

/**
$no_cache = TRUE;
if( !empty($URI->cache) ) {
	require( TATUPATH . 'libs/Cache.php' );
	$CACHE = new Cache();
	if( $data = $CACHE->get( $URI->url_this ) ) {
		echo $data;
		exit;
	}
}
**/

/** 执行主体程序 **/
require(ABSPATH . $URI->source);
$class = $URI->class;
$method = $URI->method;
$TATU = new $class();
if( empty($URI->params) ) {
	//call_user_func_array( &$TATU, $method );
	$TATU->$method();
}
else {
	call_user_func_array( array(&$TATU, $method), $URI->params );
}

/**
if( !empty($URI->cache) ) {
	$CACHE->set( $URI->url_this, $TATU->output );
	echo $TATU->output;
}
**/

echo $TATU->output;
?>